package com.scheduling.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.scheduling.product.dto.ProcessRouteDTO;
import com.scheduling.product.entity.ProcessRoute;

/**
 * 工艺路线业务层接口
 *
 * @author 开发团队
 * @since 2025-05-29
 */
public interface ProcessRouteService extends IService<ProcessRoute> {

    /**
     * 根据产品ID获取工艺路线详情
     *
     * @param productId 产品ID
     * @return 工艺路线详情（包含工序列表）
     */
    ProcessRouteDTO getRouteByProductId(String productId);

    /**
     * 根据ID获取工艺路线详情
     *
     * @param routeId 工艺路线ID
     * @return 工艺路线详情（包含工序列表）
     */
    ProcessRouteDTO getRouteById(String routeId);

    /**
     * 为产品创建工艺路线
     *
     * @param routeDTO 工艺路线信息
     * @return 创建结果
     */
    boolean createRoute(ProcessRouteDTO routeDTO);

    /**
     * 更新工艺路线
     *
     * @param routeDTO 工艺路线信息
     * @return 更新结果
     */
    boolean updateRoute(ProcessRouteDTO routeDTO);

    /**
     * 删除工艺路线
     *
     * @param routeId 工艺路线ID
     * @return 删除结果
     */
    boolean deleteRoute(String routeId);

    /**
     * 复制工艺路线到新产品
     *
     * @param sourceRouteId   源工艺路线ID
     * @param targetProductId 目标产品ID
     * @param routeName       新工艺路线名称
     * @return 复制结果
     */
    boolean copyRoute(String sourceRouteId, String targetProductId, String routeName);

    /**
     * 检查产品是否已有工艺路线
     *
     * @param productId 产品ID
     * @param excludeId 排除的ID（更新时使用）
     * @return 是否存在
     */
    boolean checkProductRouteExists(String productId, String excludeId);
} 